package com.bzkj.basicinfo.domain.warehouse;

import com.bzkj.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

/**
 * 入库单据主表对象 PDA_WareHouseIn_Bills_List
 *
 * @author system
 * @date 2025-10-17
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class PdaWarehouseInBillsList extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    @JsonProperty("id")
    private Long id;

    /** 单据号 */
    @JsonProperty("billsId")
    private String billsId;

    /** 单据日期 */
    @JsonProperty("checkDate")
    private String checkDate;

    /** 用户ID */
    @JsonProperty("userId")
    private String userId;

    /** 单据类型 */
    @JsonProperty("billsType")
    private String billsType;

    /** 单据CD */
    @JsonProperty("billsCd")
    private String billsCd;

    /** 单据状态 */
    @JsonProperty("billsState")
    private String billsState;

    /** 单据审核 */
    @JsonProperty("billsCheck")
    private String billsCheck;

    /** 发货人ID */
    @JsonProperty("SenderId")
    private String senderId;

    /** 往来单位ID */
    @JsonProperty("OwnerID")
    private String ownerId;

    /** 备注1 */
    @JsonProperty("Remarks1")
    private String remarks1;

    /** 备注2 */
    @JsonProperty("Remarks2")
    private String remarks2;

    /** 单据标识 */
    @JsonProperty("BillsFlag")
    private String billsFlag;

    /** 复核人 */
    @JsonProperty("SecondUser")
    private String secondUser;

    /** 收货人 */
    @JsonProperty("ReceiverUser")
    private String receiverUser;

    /** 发货类型 */
    @JsonProperty("SendType")
    private String sendType;

    /** 发货日期 */
    @JsonProperty("SendDate")
    private String sendDate;

    /** 是否二维码 */
    @JsonProperty("is_qr")
    private String isQr;

    /** 客户ID */
    @JsonProperty("CustomerID")
    private String customerId;

    /** 码上放心客户ID */
    @JsonProperty("MsfxCustomerID")
    private String msfxCustomerId;

    /** 仓库ID */
    @JsonProperty("StoID")
    private String stoId;

    /** 码上放心上传标识 */
    @JsonProperty("MsfxUpload")
    private String msfxUpload;

    /** 入库单明细列表 */
    private List<PdaWarehouseInBillsDetail> inDetailList;

    /** 单据类型名称（关联查询字段，用于前端显示） */
    private String billsTypeName;

    /** 往来单位名称（关联查询字段，用于前端显示） */
    private String billsCdName;

    /** 库存状态(0:待检, 1:合格, 2:不合格) */
    @JsonProperty("stockStatus")
    private String stockStatus;

    /** 总件数 */
    @JsonProperty("totalPackages")
    private java.math.BigDecimal totalPackages;

    /** 总数量 */
    @JsonProperty("totalQuantity")
    private java.math.BigDecimal totalQuantity;

    /** 录入人ID */
    @JsonProperty("creatorId")
    private String creatorId;

    /** 录入人姓名 */
    @JsonProperty("creatorName")
    private String creatorName;

    /** 验收人ID */
    @JsonProperty("acceptUserId")
    private String acceptUserId;

    /** 验收人姓名 */
    @JsonProperty("acceptUserName")
    private String acceptUserName;

    /** 验收时间 */
    @JsonProperty("acceptTime")
    private String acceptTime;

    /** 上架人ID */
    @JsonProperty("shelvingUserId")
    private String shelvingUserId;

    /** 上架人姓名 */
    @JsonProperty("shelvingUserName")
    private String shelvingUserName;

    /** 上架时间 */
    @JsonProperty("shelvingTime")
    private String shelvingTime;

    /** 是否拒收(0-否, 1-是) */
    @JsonProperty("isRejected")
    private String isRejected;

    /** 拒收原因 */
    @JsonProperty("rejectionReason")
    private String rejectionReason;

    /** 查询开始时间（用于时间范围查询） */
    private String beginTime;

    /** 查询结束时间（用于时间范围查询） */
    private String endTime;

    // ========== 新增业务字段 - 收货相关 ==========

    /** 收货人ID */
    @JsonProperty("ReceiverUserId")
    private String receiverUserId;

    /** 收货人姓名 */
    @JsonProperty("ReceiverUserName")
    private String receiverUserName;

    /** 收货时间 */
    @JsonProperty("ReceiveTime")
    private String receiveTime;

    // ========== 异常处理字段 ==========

    /** 验收结果(pass/fail/pending) */
    @JsonProperty("AcceptResult")
    private String acceptResult;

    /** 验收备注 */
    @JsonProperty("AcceptRemark")
    private String acceptRemark;

    /** 上架结果(success/fail) */
    @JsonProperty("ShelvingResult")
    private String shelvingResult;

    /** 上架备注 */
    @JsonProperty("ShelvingRemark")
    private String shelvingRemark;

    /** 异常类型(inspect_fail/shelving_fail) */
    @JsonProperty("ExceptionType")
    private String exceptionType;

    /** 异常原因 */
    @JsonProperty("ExceptionReason")
    private String exceptionReason;

    /** 异常时间 */
    @JsonProperty("ExceptionTime")
    private String exceptionTime;

    /** 异常处理人ID */
    @JsonProperty("ExceptionUserId")
    private String exceptionUserId;

    /** 异常处理人姓名 */
    @JsonProperty("ExceptionUserName")
    private String exceptionUserName;

    /** 签字人ID */
    @JsonProperty("SignUserId")
    private String signUserId;

    /** 签字人姓名 */
    @JsonProperty("SignUserName")
    private String signUserName;

    /** 签字时间 */
    @JsonProperty("SignTime")
    private String signTime;

    /** 总批次数 */
    @JsonProperty("TotalBatches")
    private Integer totalBatches;

    /** 已处理批次数 */
    @JsonProperty("ProcessedBatches")
    private Integer processedBatches;
}